2006年11月23日
川俣晶の縁側ソフトウェア技術雑記 total 4799 count

Vistaに標準で付いているサイドバーGadgetを改造する方法

Written By: 川俣 晶連絡先

 VistaのサイドバーGadgetは中身がほとんどDHTMLで、しかも標準のGadgetですら「隠す」という発想が全く見られません。難読化もされていません。これはもう、気に入らないところは自由に直して使ってください……という感じだったので、少し直してみました。

インストール場所 §

 通常のサイドバーGadgetの置き場所はここです。

(SYSTEM-DRIVE):\users\(USER-NAME)\appdata\Local\Microsoft\Windows Sidebar\Gadgets\

 しかし、標準付属のものは以下にあります。

(SYSTEM-DRIVE):\Program Files\Windows Sidebar\Gadgets\

ファイル構成 §

 拡張子.gadjetが付いたディレクトリが、1つのGadgetを構成します。

 この中に、少なくともHTMLファイルが1つと、マニフェストXMLファイルが1つ必要です。HTMLファイルは、スクリプト部分を別ファイルにしたりすることも多いようです。他に画像ファイルなどもあります。

 HTMLとJavaScriptのテキストエディタで書き換えれば改造は容易にできます。

 一応、安全のために、

(SYSTEM-DRIVE):\users\(USER-NAME)\appdata\Local\Microsoft\Windows Sidebar\Gadgets\

 にコピーを作ってそれを使うと良いでしょう。

具体例 §

 スライドショーで、画像をクリックするとそれをIEで表示する改造例です。

 試行錯誤しながら作ったので、あまり良い出来ではありません。ちなみに、マウスポインタを合わせると出てくるナビゲーションボタンの最も右側をクリックすると関連づけされたアプリで画像が開くので、まず要らない機能でもあります (汗。

 制限事項として、最初の1枚の画像はクリックしてもIEが起動しない点があります。

slideShow.jsの修正点 §

 function loadSlide(transFlag)の前後を以下のように修正。

var rememberPicToGet;

function kickViewApp()

{

    if( rememberPicToGet != undefined )

    {

        System.Shell.execute(

            "(適切なパス)\\iexplore.exe",

            '"' + rememberPicToGet + '"');

    }

}

function loadSlide(transFlag)

{

    var picToGet = imagePathAndName;

    rememberPicToGet = picToGet;

SlideShow.html §

 以下の行に

<img  id="picture" src="images/blank.png" alt="" />  

 onclickイベントを追加。

<img  id="picture" src="images/blank.png" alt=""

onclick="kickViewApp();" />

感想 §

 Vistaは使っていて面白いですね。

 トラブルも多く穴だらけですが、積極的に働きかけていける余地がとても多く見つかります。

 既に完成されていて手出しする余地がないシステムや、手出しするために面倒な手順を踏まねばならないシステムと比較すると、楽しさは圧倒的です。

 ちなみに、これとは別に、ゼロから書き起こしたGadgetも1つ作っています。インストール後、翌日には既に対応ソフトを作り上げている(作っているではなく、既にできている)……というフットワークの軽さは素晴らしいですね。